import axios from 'axios'
import { Message } from 'element-ui'
import store from '../store'
import { getToken } from '@/utils/auth'

// 创建axios实例
const service = axios.create({
    baseURL: process.env.BASE_API, // api 的 base_url
    timeout: 500000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(
        config => {
            if (store.getters.token) {
                config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
            }
            return config
        },
        error => {
            console.log(error)
            Promise.reject(error)
        }
)

// response 拦截器
service.interceptors.response.use(
        response => {
            /**
             * code为非0是抛错 可结合自己业务进行修改
             */
            const res = response.data
            if (res.code !== 0) {
                //未登陆和后端的token失效等
                if (String(res.code).startsWith('5000')) {
                    //重定向到登录页面
                    store.dispatch('FedLogOut').then(() => {
                        location.reload() // 为了重新实例化vue-router对象 避免bug
                    })
                } else {
                    Message({
                        message: res.message,
                        type: 'error',
                        duration: 5 * 1000
                    })
                }
                return Promise.reject('error')
            } else {
                return response.data
            }
        },
        error => {
            console.log('err' + error)
            return Promise.reject(error)
        }
)

export default service
